<html>
<style>
  table, th, td {
     border: 1px solid rgb(200,200,200);
     border-collapse: collapse;
     }
  table {
     table-layout: fixed;
     width: 1900px;
     }
  td {
     overflow-x: auto;
     }
  th, td {
    padding: 15px;
    text-align: left;
    vertical-align: middle;
    }
  .comments {
    color: #292;
    }
  .source-code {
    color: #22F;
    }
  .interface-parent {
    color: #AAA;
    }
  .interface-name {
    color: #000;
    }
  .check-mark {
    text-align: center;
    }
</style>
<body>
<br>

<h1>DJI Mobile SDK UX SDK 4.7 to 4.8 Differences</h1>

<br>

<h2>APIs removed from 4.7</h2>

<table class="diff-table"><tr valign="top"><td width=15%><font color="#000">Parent and Name</font></td><td width=15%><font color="#000">Code</font></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXMapWidget.h: DUXMapWidget.</span><span class="interface-name">clearCurrentFlightPath</span></td><td width=15%><span class="source-code">- (void)clearCurrentFlightPath</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXMapWidget.h: DUXMapWidget.</span><span class="interface-name">showDirectionToHome</span></td><td width=15%><span class="source-code">@property (nonatomic, assign) BOOL showDirectionToHome</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXMapWidget.h: DUXMapWidget.</span><span class="interface-name">showFlightPath</span></td><td width=15%><span class="source-code">@property (nonatomic, assign) BOOL showFlightPath</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXMapWidget.h: DUXMapWidget.</span><span class="interface-name">showHomeAnnotation</span></td><td width=15%><span class="source-code">@property (nonatomic, assign) BOOL showHomeAnnotation</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXMapWidget.h: DUXMapWidget.</span><span class="interface-name">tapToUnlockEnabled</span></td><td width=15%><span class="source-code">@property (nonatomic, assign) BOOL tapToUnlockEnabled</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXVisualizerWidget.h: </span><span class="interface-name">DUXVisualizerWidget</span></td><td width=15%><span class="source-code">@interface DUXVisualizerWidget : DUXWidget</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXVisualizerWidget.h: DUXVisualizerWidget.</span><span class="interface-name">clearVisualizer</span></td><td width=15%><span class="source-code">- (void)clearVisualizer</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXVisualizerWidget.h: DUXVisualizerWidget.</span><span class="interface-name">followAircraft</span></td><td width=15%><span class="source-code">- (void)followAircraft:(BOOL)followAircraft</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXVisualizerWidget.h: DUXVisualizerWidget.</span><span class="interface-name">showExpectedTimeLine</span></td><td width=15%><span class="source-code">- (void)showExpectedTimeLine:(NSArray &lt;DJIMissionControlTimelineElement&gt; * _Nonnull)elements</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXVisualizerWidget.h: DUXVisualizerWidget.</span><span class="interface-name">showHomeOnVisualizer</span></td><td width=15%><span class="source-code">- (void)showHomeOnVisualizer:(BOOL)showHome</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXVisualizerWidget.h: DUXVisualizerWidget.</span><span class="interface-name">showRealTimeFlightPath:withDeltaBufferBetweenPoints</span></td><td width=15%><span class="source-code">- (void)showRealTimeFlightPath:(BOOL)showRealtimeFlight withDeltaBufferBetweenPoints:(float)deltaBuffer</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXTakeOffWidget.h: </span><span class="interface-name">DUXAircraftTakeOffLandingState</span></td><td width=15%><span class="source-code">typedef NS_ENUM(NSUInteger, DUXAircraftTakeOffLandingState) </span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXTakeOffWidget.h: DUXAircraftTakeOffLandingState.</span><span class="interface-name">DUXAircraftTakeOffLandingStateFlying</span></td><td width=15%><span class="source-code">    DUXAircraftTakeOffLandingStateFlying</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXTakeOffWidget.h: DUXAircraftTakeOffLandingState.</span><span class="interface-name">DUXAircraftTakeOffLandingStateLanded</span></td><td width=15%><span class="source-code">    DUXAircraftTakeOffLandingStateLanded</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXTakeOffWidget.h: DUXAircraftTakeOffLandingState.</span><span class="interface-name">DUXAircraftTakeOffLandingStateLanding</span></td><td width=15%><span class="source-code">    DUXAircraftTakeOffLandingStateLanding</span></td></tr></table><br>

<h2>APIs added to 4.8</h2>

<table class="diff-table"><tr valign="top"><td width=15%><font color="#000">Parent and Name</font></td><td width=15%><font color="#000">Code</font></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXAccessLockerWidget.h: </span><span class="interface-name">DUXAccessLockerWidget</span></td><td width=15%><span class="source-code">@interface DUXAccessLockerWidget : DUXWidget</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXAccessLockerWidget.h: DUXAccessLockerWidget.</span><span class="interface-name">presentingViewController</span></td><td width=15%><span class="source-code">@property (nonatomic, weak) UIViewController *presentingViewController</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXBeaconWidget.h: </span><span class="interface-name">DUXBeaconWidget</span></td><td width=15%><span class="source-code">@interface DUXBeaconWidget : DUXWidget</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXBeaconWidget.h: DUXBeaconWidget.</span><span class="interface-name">isEnabled</span></td><td width=15%><span class="source-code">@property (readonly) BOOL isEnabled</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXBeaconWidget.h: DUXBeaconWidget.</span><span class="interface-name">isSupported</span></td><td width=15%><span class="source-code">@property (readonly) BOOL isSupported</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXFPVViewController.h: </span><span class="interface-name">DUXFPVViewControllerDelegate</span></td><td width=15%><span class="source-code">@protocol DUXFPVViewControllerDelegate &lt;NSObject&gt;</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXFPVViewController.h: DUXFPVViewControllerDelegate.</span><span class="interface-name">fpvViewController:didUpdateCurrentFPVViewCurrentCameraIndexTo</span></td><td width=15%><span class="source-code">- (void)fpvViewController:(nonnull DUXFPVViewController *)fpvViewController didUpdateCurrentFPVViewCurrentCameraIndexTo:(NSUInteger)updatedFPVViewCurrentCameraIndex</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXFPVViewController.h: </span><span class="interface-name">DUXFPVViewGridOverlayType</span></td><td width=15%><span class="source-code">typedef NS_ENUM(NSUInteger, DUXFPVViewGridOverlayType) </span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXFPVViewController.h: DUXFPVViewGridOverlayType.</span><span class="interface-name">DUXFPVViewGridOverlayTypeGrid</span></td><td width=15%><span class="source-code">    DUXFPVViewGridOverlayTypeGrid</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXFPVViewController.h: DUXFPVViewGridOverlayType.</span><span class="interface-name">DUXFPVViewGridOverlayTypeGridWithDiagonals</span></td><td width=15%><span class="source-code">    DUXFPVViewGridOverlayTypeGridWithDiagonals</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXFPVViewController.h: DUXFPVViewGridOverlayType.</span><span class="interface-name">DUXFPVViewGridOverlayTypeNone</span></td><td width=15%><span class="source-code">    DUXFPVViewGridOverlayTypeNone = 1</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXFPVViewController.h: DUXFPVViewGridOverlayType.</span><span class="interface-name">DUXFPVViewGridOverlayTypeUnknown</span></td><td width=15%><span class="source-code">    DUXFPVViewGridOverlayTypeUnknown = 0xFF</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXFPVViewController.h: DUXFPVViewController.</span><span class="interface-name">canDisplayGridOverlay</span></td><td width=15%><span class="source-code">@property (nonatomic) BOOL canDisplayGridOverlay</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXFPVViewController.h: DUXFPVViewController.</span><span class="interface-name">currentGridOverlayType</span></td><td width=15%><span class="source-code">@property (nonatomic, assign) DUXFPVViewGridOverlayType currentGridOverlayType</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXFPVViewController.h: DUXFPVViewController.</span><span class="interface-name">isColorWaveformWidgetVisible</span></td><td width=15%><span class="source-code">@property (nonatomic) BOOL isColorWaveformWidgetVisible</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXFPVView.h: DUXFPVView.</span><span class="interface-name">showCameraSide</span></td><td width=15%><span class="source-code">@property (nonatomic, assign) BOOL showCameraSide</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXMapWidget.h: DUXMapWidget.</span><span class="interface-name">clearCurrentFlightPath</span></td><td width=15%><span class="source-code">- (void)clearCurrentFlightPath</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXMapWidget.h: DUXMapWidget.</span><span class="interface-name">showDirectionToHome</span></td><td width=15%><span class="source-code">@property (nonatomic, assign) BOOL showDirectionToHome</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXMapWidget.h: DUXMapWidget.</span><span class="interface-name">showFlightPath</span></td><td width=15%><span class="source-code">@property (nonatomic, assign) BOOL showFlightPath</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXMapWidget.h: DUXMapWidget.</span><span class="interface-name">showHomeAnnotation</span></td><td width=15%><span class="source-code">@property (nonatomic, assign) BOOL showHomeAnnotation</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXMapWidget.h: DUXMapWidget.</span><span class="interface-name">tapToUnlockEnabled</span></td><td width=15%><span class="source-code">@property (nonatomic, assign) BOOL tapToUnlockEnabled</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXSpeakerViewController.h: </span><span class="interface-name">DUXSpeakerViewController</span></td><td width=15%><span class="source-code">@interface DUXSpeakerViewController : UIViewController</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXSpeakerWidget.h: </span><span class="interface-name">DUXSpeakerWidget</span></td><td width=15%><span class="source-code">@interface DUXSpeakerWidget : DUXWidget</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXSpeakerWidget.h: DUXSpeakerWidget.</span><span class="interface-name">isEnabled</span></td><td width=15%><span class="source-code">@property (readonly) BOOL isEnabled</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXSpeakerWidget.h: DUXSpeakerWidget.</span><span class="interface-name">isSupported</span></td><td width=15%><span class="source-code">@property (readonly) BOOL isSupported</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXSpotlightSettingsViewController.h: </span><span class="interface-name">DUXSpotlightSettingsViewController</span></td><td width=15%><span class="source-code">@interface DUXSpotlightSettingsViewController : UIViewController&lt;DUXObjectProtocol&gt;</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXSpotlightWidget.h: </span><span class="interface-name">DUXSpotlightWidget</span></td><td width=15%><span class="source-code">@interface DUXSpotlightWidget : DUXWidget</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXSpotlightWidget.h: DUXSpotlightWidget.</span><span class="interface-name">isEnabled</span></td><td width=15%><span class="source-code">@property (readonly) BOOL isEnabled</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXSpotlightWidget.h: DUXSpotlightWidget.</span><span class="interface-name">isSupported</span></td><td width=15%><span class="source-code">@property (readonly) BOOL isSupported</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXStorageCapacityChecklistItem.h: </span><span class="interface-name">DUXStorageCapacityComprehensiveState</span></td><td width=15%><span class="source-code">typedef NS_ENUM(NSUInteger, DUXStorageCapacityComprehensiveState) </span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXStorageCapacityChecklistItem.h: DUXStorageCapacityComprehensiveState.</span><span class="interface-name">DUXStorageCapacityComprehensiveStateAllowFormatting</span></td><td width=15%><span class="source-code">    DUXStorageCapacityComprehensiveStateAllowFormatting</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXStorageCapacityChecklistItem.h: DUXStorageCapacityComprehensiveState.</span><span class="interface-name">DUXStorageCapacityComprehensiveStateBusy</span></td><td width=15%><span class="source-code">    DUXStorageCapacityComprehensiveStateBusy</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXStorageCapacityChecklistItem.h: DUXStorageCapacityComprehensiveState.</span><span class="interface-name">DUXStorageCapacityComprehensiveStateError</span></td><td width=15%><span class="source-code">    DUXStorageCapacityComprehensiveStateError</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXStorageCapacityChecklistItem.h: DUXStorageCapacityComprehensiveState.</span><span class="interface-name">DUXStorageCapacityComprehensiveStateNormal</span></td><td width=15%><span class="source-code">    DUXStorageCapacityComprehensiveStateNormal</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXStorageCapacityChecklistItem.h: DUXStorageCapacityComprehensiveState.</span><span class="interface-name">DUXStorageCapacityComprehensiveStateSlow</span></td><td width=15%><span class="source-code">    DUXStorageCapacityComprehensiveStateSlow</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXStorageCapacityChecklistItem.h: DUXStorageCapacityComprehensiveState.</span><span class="interface-name">DUXStorageCapacityComprehensiveStateUnknown</span></td><td width=15%><span class="source-code">    DUXStorageCapacityComprehensiveStateUnknown</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXStorageCapacityChecklistItem.h: DUXStorageCapacityComprehensiveState.</span><span class="interface-name">DUXStorageCapacityComprehensiveStateWarning</span></td><td width=15%><span class="source-code">    DUXStorageCapacityComprehensiveStateWarning</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXStorageCapacityChecklistItem.h: DUXStorageCapacityChecklistItem.</span><span class="interface-name">comprehensiveState</span></td><td width=15%><span class="source-code">@property (assign, nonatomic, readonly) DUXStorageCapacityComprehensiveState comprehensiveState</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXStorageCapacityChecklistItem.h: DUXStorageCapacityChecklistItem.</span><span class="interface-name">currentCameraStorageLocation</span></td><td width=15%><span class="source-code">@property (nonatomic, assign) DJICameraStorageLocation currentCameraStorageLocation</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXStorageCapacityChecklistItem.h: DUXStorageCapacityChecklistItem.</span><span class="interface-name">internalStorageSpaceLeftInMB</span></td><td width=15%><span class="source-code">@property (nonatomic, assign) NSInteger internalStorageSpaceLeftInMB</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXStorageCapacityChecklistItem.h: DUXStorageCapacityChecklistItem.</span><span class="interface-name">preferredCameraIndex</span></td><td width=15%><span class="source-code">@property (nonatomic) NSUInteger preferredCameraIndex</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXStorageCapacityChecklistItem.h: DUXStorageCapacityChecklistItem.</span><span class="interface-name">preferredCameraStorageLocation</span></td><td width=15%><span class="source-code">@property (nonatomic) DJICameraStorageLocation preferredCameraStorageLocation</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXStorageCapacityChecklistItem.h: DUXStorageCapacityChecklistItem.</span><span class="interface-name">sdSpaceLeftInMB</span></td><td width=15%><span class="source-code">@property (nonatomic, assign) NSInteger sdSpaceLeftInMB</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXStorageCapacityChecklistItem.h: DUXStorageCapacityChecklistItem.</span><span class="interface-name">ssdSpaceLeftInMB</span></td><td width=15%><span class="source-code">@property (nonatomic, assign) NSInteger ssdSpaceLeftInMB</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXWidgetProtocol.h: </span><span class="interface-name">minimumSize</span></td><td width=15%><span class="source-code">@property CGSize minimumSize</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXPreFlightStatusWidget.h: DUXPreFlightStatusWidget.</span><span class="interface-name">currentMessage</span></td><td width=15%><span class="source-code">@property NSString *currentMessage</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXPreFlightStatusWidget.h: DUXPreFlightStatusWidget.</span><span class="interface-name">scrollingType</span></td><td width=15%><span class="source-code">@property DUXPreFlightStatusWidgetScrollingType scrollingType</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXTakeOffWidget.h: </span><span class="interface-name">DUXAircraftTakeOffLandingState</span></td><td width=15%><span class="source-code">typedef NS_ENUM(NSUInteger, DUXAircraftTakeOffLandingState) </span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXTakeOffWidget.h: DUXAircraftTakeOffLandingState.</span><span class="interface-name">DUXAircraftTakeOffLandingStateCancel</span></td><td width=15%><span class="source-code">    DUXAircraftTakeOffLandingStateCancel</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXTakeOffWidget.h: DUXAircraftTakeOffLandingState.</span><span class="interface-name">DUXAircraftTakeOffLandingStateDisabled</span></td><td width=15%><span class="source-code">    DUXAircraftTakeOffLandingStateDisabled</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXTakeOffWidget.h: DUXAircraftTakeOffLandingState.</span><span class="interface-name">DUXAircraftTakeOffLandingStateLandEnabled</span></td><td width=15%><span class="source-code">    DUXAircraftTakeOffLandingStateLandEnabled</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">DUXTakeOffWidget.h: DUXAircraftTakeOffLandingState.</span><span class="interface-name">DUXAircraftTakeOffLandingStateTakeOffEnabled</span></td><td width=15%><span class="source-code">    DUXAircraftTakeOffLandingStateTakeOffEnabled</span></td></tr></table><p style="font-size:50%; color:white">1e02317 7171262 </p></body>
</html>

